package tech.aistar.day13;

import java.io.File;
import java.io.IOException;

/**
 * 本类用来演示: File实例
 *
 * @author: success
 * @date: 2021/3/24 9:07 上午
 */
public class FileDemo {
    public static void main(String[] args) {
        //createFolder("/Users/admin/Desktop/file_j13/aa/bb");//绝对路径

        //createFolder("src/tech/aistar/day13/file");//相对路径

        //createFile("src/tech/aistar/day13/file/file.txt");

        //getFileInfo("src/tech/aistar/day13/file");

        //getFileInfo("/Users/admin/Desktop/file_j13/aa/bb");

        //delFileOrOneFolder("src/tech/aistar/day13/file");

        listFile("src/tech/aistar/day08");

       /* File file = new File("src/tech/aistar/day08");
        String[] files=file.list();
        for (String s : files) {
            System.out.println(s);
        }*/
    }

    /**
     * 创建目录...
     * @param path 可以是相对路径,也可以是绝对路径
     */
    public static void createFolder(String path){
        //1. 通过传入的路径构建一个File实例
        File file = new File(path);
        //2. 判断file是否存在
        if(file.exists()){
            System.out.println(file+"已经存在了!");
            return;
        }

        //判断传入的路径是否为目录的路径
//        if(file.isFile()){
//            System.out.println(file+",不是目录的路径,是文件的路径!");
//            return;
//        }

        //3. 调用创建目录的方法
        //if(file.mkdir()){//一次只允许创建一个目录
        if(file.mkdirs()){//一次允许创建多个目录
            System.out.println(file+"目录创建成功!");
        }else{
            System.out.println(file+"目录创建失败!");
        }
    }

    /**
     * 创建文件...
     * @param pathname 文件的路径
     */
    public static void createFile(String pathname){
        File file = new File(pathname);
        if(file.exists()){
            System.out.println(file+",文件已经存在了");
            return;
        }
        try {
            if (file.createNewFile()) {
                System.out.println(file+",文件创建成功!");
            }else{
                System.out.println(file+",文件创建失败!");
            }
        } catch (IOException e) {//文件的路径是不存在的..
            e.printStackTrace();
        }
    }

    /**
     * 获取文件的元信息
     * @param pathname 可以是文件/文件夹
     */
    public static void getFileInfo(String pathname){
        File file = new File(pathname);
        if(!file.exists()){
            System.out.println(file+",不存在!");
            return;
        }
        //文件的名称是包含文件名和后缀
        System.out.println(file.getName());//获取file的名称

        //获取file的绝对路径
        // /Users/admin/Documents/success/teaching/wksp/j13_corejava_teacher/src/tech/aistar/day13/file
        System.out.println(file.getAbsoluteFile());

        //File构造中传进来的pathname
        System.out.println(file.getPath());//src/tech/aistar/day13/file

        //获取file的父目录 - 相对路径/绝对路径 - pathname
        System.out.println(file.getParent());

        System.out.println(file.getParentFile());
    }

    /**
     * 删除文件/目录
     *
     * 非空目录不允许直接删除
     * @param pathname
     */
    public static void delFileOrOneFolder(String pathname){
        File file = new File(pathname);
        if(!file.exists()){
            System.out.println(file+",不存在!");
            return;
        }
        if(file.delete()){
            System.out.println(file.getName()+",删除成功!");
        }else{
            System.out.println(file+",删除失败!");
        }
    }

    /**
     * 给定一个目录pathname,然后输出这个目录下所有的第一层的子目录/子文件.
     * @param pathname
     */
    public static void listFile(String pathname){
        File file = new File(pathname);
        if(!file.exists())
            return;
        //判断file是否为目录
        if(file.isFile()){
            System.out.println(file+",不是一个目录!");
            return;
        }
        File[] files = file.listFiles();

        //防止传进来的是一个空目录
        if(null!=files && files.length>0){
            for (File f : files) {
                //如果f是目录 - 输出绝对路径
                if(f.isDirectory()){
                    System.out.println(f.getAbsolutePath());
                }else if(f.isFile()){
                    //如果f是文件 - 输出file的名称
                    System.out.println(f.getName());
                }
            }
        }
    }
}
